/**
 * 1、挂载插件
 * 2、重写push方法
 * 3、实例化，配置路由
 * 4、实现路由权限拦截
 */
import Vue from 'vue'
import Router from 'vue-router'
import store from '../store'

Vue.use(Router)

/** 重写push方法 */
const pushPlugin = Router.prototype.push
Router.prototype.push = function (params) {
  pushPlugin.call(this, params).catch(() => {})
}

/** 解决首次加载慢的问题 */
const NotRight = () => import('../pages/common/NotRight')
const Login = () => import('../pages/login')
const router = new Router({
    mode: 'history',
    routes: [
        {path: '/', redirect: '/login'},
        {path: '/login', component: Login, meta: {noLogin: true,Layout:'main-blank'}},
        {path: '/403', component: NotRight, meta: {noLogin: true}},
    ]
})
router.beforeEach(function (to, _, next) {
  /**
     * 1、是否需要拦截
     * 2、获取标识--vuex中
     * 3、判断是否符合条件：token登录标识，用户访问权限
     */
  if (to.meta.noLogin) {
    next()
    return
  }

  const _token = store.getters['common/token']
  if (!_token) {
    next('/login')
    return
  }

  const _hasRight = true // todo 根据后端菜单权限和用户权限得到值
  if (!_hasRight) {
    next('/403')
    return
  }

  next()
})

export default router
